import { injectable, Service } from './service'

@injectable
export default class OutputService extends Service {
  private io: ((msg: string, level: 'debug' | 'warning' | 'error' | 'script') => void) | undefined = undefined

  setio (_io: typeof this.io) {
    this.io = _io
  }

  script (msg: string) {
    this.io?.(msg, 'script')
  }

  debug (msg: string) {
    this.io?.(msg, 'debug')
  }

  warning (msg: string) {
    this.io?.(msg, 'warning')
  }

  error (msg: string) {
    this.io?.(msg, 'error')
  }
}
